// Copyright (C) 2023 即时通讯网(52im.net) & Jack Jiang.
// The RainbowChat Project. All rights reserved.
// 
// 【本产品为著作权产品，合法授权后请放心使用，禁止外传！】
// 【本次授权给：<北京小羊驼科技有限公司>，授权编号：<NT231212144350>，代码指纹：<A.702363430.550>，技术对接人微信：<ID: wxid_wbyootvkdcgj22>】
// 【授权寄送：<收件：苏先生、地址：北京市大兴区北京密码西区6号楼1单元301、电话：18613885610、邮箱：bd@huiyuanxiang-inc.com>】
// 
// 【本系列产品在国家版权局的著作权登记信息如下】：
// 1）国家版权局登记名(简称)和权证号：RainbowChat    （证书号：软著登字第1220494号、登记号：2016SR041877）
// 2）国家版权局登记名(简称)和权证号：RainbowChat-Web（证书号：软著登字第3743440号、登记号：2019SR0322683）
// 3）国家版权局登记名(简称)和权证号：RainbowAV      （证书号：软著登字第2262004号、登记号：2017SR676720）
// 4）国家版权局登记名(简称)和权证号：MobileIMSDK-Web（证书号：软著登字第2262073号、登记号：2017SR676789）
// 5）国家版权局登记名(简称)和权证号：MobileIMSDK    （证书号：软著登字第1220581号、登记号：2016SR041964）
// * 著作权所有人：江顺/苏州网际时代信息科技有限公司
// 
// 【违法或违规使用投诉和举报方式】：
// 联系邮件：jack.jiang@52im.net
// 联系微信：hellojackjiang
// 联系QQ号：413980957
// 授权说明：http://www.52im.net/thread-1115-1-1.html
// 官方社区：http://www.52im.net
package com.x52im.rbchat.logic.main.mainimpl;

import android.view.Menu;
import android.widget.Button;

import com.eva.android.widget.ActivityRoot;
import com.noober.floatmenu.FloatMenu;
import com.noober.floatmenu.MenuItem;
import com.x52im.rbchat.logic.contact.FriendListFragment;
import com.x52im.rbchat.utils.IntentFactory;
import com.x52im.rbchat.R;

import java.util.ArrayList;

/**
 * 主界面中的"好友"子Fragment的标题栏封装根类。
 * <p>
 * 当前，主界面的UI组织方式是：单Activity+多个子Fragment基于ViewPager方式进行切换。而Fragment不像Activity，
 * 它是没有title栏的，为了子Fragment切换为当前界面界面时，能及时显示它对应的标题栏（包括标题文本、标题栏功能功能
 * 等），一个子Fragment将对应一个本类实现，其中将实现对主界面Activity的title栏的设置，从而显示本Fragment对应的
 * 各项内容（包括标题文本、标题栏功能等）。
 *
 * @author Jack Jiang
 * @since 8.0
 */
public class FriendListFragmentTitleWrapper extends AbstractFragmentTitleWrapper {

    /** 常量：弹出菜单id之"邀请朋友" */
    private final int FLOAT_MENU_ID_INVITE_FRIEND = Menu.FIRST;
    /** 常量：弹出菜单id之"添加好友" */
    private final int FLOAT_MENU_ID_ADD_USER = Menu.FIRST + 1;
    /** "更多"功能弹出菜单（仿Android版微信） */
    private FloatMenu floatMenu = null;

    /** 右上角的弹出功能菜单 */
    /** 按钮：更多 */
    private Button btnMore = null;
    /** 按钮：我的背包 */
    private Button btnPackage = null;

    private FriendListFragment fragment = null;

    public FriendListFragmentTitleWrapper(ActivityRoot parentActivity, FriendListFragment fragment) {
        super(parentActivity);
        this.fragment = fragment;
    }

    public void loadTitle() {
        resetTitle();

        if (floatMenu == null) {
            //  初始化浮动弹出菜单
            this.initFloatMenu();
        }

        // 标题栏右边的按钮
        btnMore = getTitleBar().getRightGeneralButton(R.drawable.roster_list_view_more_btn);
        // 标题栏左边的按钮
        btnPackage = getTitleBar().getLeftGeneralButton(R.drawable.roster_list_view_package_btn);

        // "更多"菜单项点击事件处理
        btnMore.setOnClickListener(v -> floatMenu.show());
        // 点击打开我的礼品包
        btnPackage.setOnClickListener(v -> {
            if (fragment != null) fragment.showGiftsToolsPopupWindow();
        });

        // 为弹出菜单添加targetView
        floatMenu.setTargetView(btnMore);
    }

    /**
     * 初始化仿微信的浮动弹出菜单。
     */
    private void initFloatMenu() {
        // 准备好要弹出的菜单item
        final ArrayList<MenuItem> menuItemList = new ArrayList<>();
        menuItemList.add(new MenuItem()
                .setItem(parentActivity.$$(R.string.roster_list_view_invite))
                .setItemResId(R.drawable.roster_more_ivnvite_ico)
                .setItemActionId(FLOAT_MENU_ID_INVITE_FRIEND)
        );
        menuItemList.add(new MenuItem()
                .setItem(parentActivity.$$(R.string.roster_list_view_search))
                .setItemResId(R.drawable.roster_more_adduser_ico)
                .setItemActionId(FLOAT_MENU_ID_ADD_USER)
        );

        // 准备好弹出菜单对象
        floatMenu = new FloatMenu(parentActivity, null, 130);
        // 添加要显示的菜单项
        floatMenu.items(menuItemList);
        // 菜单项点击事件处理
        floatMenu.setOnItemClickListener((v, menuItemPosition) -> {
            MenuItem mi = menuItemList.get(menuItemPosition);
            if (mi != null) {
                switch (mi.getItemActionId()) {
                    // 邀请朋友
                    case FLOAT_MENU_ID_INVITE_FRIEND: {
                        parentActivity.startActivity(IntentFactory.createInviteFriendIntent(parentActivity));
                        break;
                    }
                    // 添加好友
                    case FLOAT_MENU_ID_ADD_USER: {
                        parentActivity.startActivity(IntentFactory.createFindFriendIntent(parentActivity));
                        break;
                    }
                }
            }
        });
    }
}